#include<bits/stdc++.h>
using namespace std;
const int N = 10005;
int n,a[N][N];
int row[N],col[N];  // 行和列

int main(){
    // 马鞍数 - 行最小/列最小
    cin >> n;
    for(int i = 0; i < n; i++){
        row[i] = col[i] = INT_MAX;
    }
    // 预处理
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cin >> a[i][j];
            row[i] = min(row[i],a[i][j]);
            col[j] = min(col[j],a[i][j]);
        }
    }
    // 统计
    int cnt = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(a[i][j] == row[i] && a[i][j] == col[j]){
                cnt++;
            }
        }
    }
    cout << cnt;
    return 0;
}

/*
1. 暴力枚举 O(n^3)
2. 预处理  得到每行/每列最值.  在枚举每个元素即可. O(n^2)
3
9 2 4
5 6 5
15 2 6

*/